package com.example.basic.web.service.notice;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.basic.web.model.notice.InNotice;
import com.example.basic.web.response.InNoticeResponse;
import com.example.basic.web.response.PdaNoticeResponse;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author suntt
 * @since 2019-10-29
 */
public interface InNoticeService {

    /**
     * 批量新增
     * @param inNoticeList
     * @return
     */
    Boolean batchAdd(List<InNotice> inNoticeList,Boolean isAudit);

    /**
     * 修改  zzl
     * @param inNotice 模型
     * @return
     */
    InNotice modify(InNotice inNotice);

    /**
     * 详情  zzl
     * @param inNoticeCode 入库通知单编码
     * @return
     */
    InNotice detail(String inNoticeCode);

    /**
     * 删除  zzl
     * @param inNoticeCode 入库通知单编码
     * @return
     */
    int delete(String inNoticeCode);

    /**
     * 审核/取消审核  zzl
     * @param inNotice 入库通知单
     * @return
     */
    int auditOrCancel(InNotice inNotice);

    /**
     * 入库通知单列表
     * @param queryPage 分页
     * @param searchParam 遗体名称，拼音码，五笔码
     * @param sex 性别
     * @param pharmCode 库房编码
     * @param zoneCode 分区编码
     * @param depotCode 库位编码
     * @param beginTime 开始日期
     * @param endTime 结束日期
     * @return
     */
    IPage<InNoticeResponse> queryList(Page<InNoticeResponse> queryPage, String searchParam, String sex,String pharmCode,String zoneCode,String depotCode,String beginTime,String endTime);

    /**
     * 入库通知单列表
     *
     * @param queryPage
     * @param searchParam 模糊搜索(遗体名称，拼音码，五笔码)
     * @param type        类型，1-待发起，2-已发起
     * @return
     */
    IPage<PdaNoticeResponse> noticeList(Page<PdaNoticeResponse> queryPage, String searchParam, String type);

    /**
     * 通过遗体编码获取入库通知单
     * @param remainsCode 遗体编码
     * @return
     */
    InNotice findByRemainsCode(String remainsCode);

    /**
     * PDA-入库上架
     * @param inNotice
     * @return
     */
    Boolean inPharm(InNotice inNotice);
}